#include"csapp.h"

void echo(int connfd);
void *thread(void *vargp);

int main(int argc,char **argv)
{
int listenfd,*connfd,port;
socklen_t clientlen = sizeof(struct sockaddr_in);
struct sockaddr_in cllientaddr;
pthread_t tid;

if(argc != 2)
{
fprintf(stderr,"usage:%s<port>\n",argv[0]);
exit(0);
}
port=atoi(argv[1]);
listenfd = Open_listenfd(port);
while(1){
connfd=Malloc(sizeof(int));
*connfd=Accept(listenfd,(SA *)&clientaddr,&clientlen);
Pthread_create(&tid,NULL,thread,connfdp);  //创建一个指向已连接符的指针，将已连接描述符传递给对等线程
}
}

void *thread(void *vargp)  //赋值给局部变量
{
int connfd=*((int *)vargp);  //对等线程间接引用这个指针
Pthread_detach(pthread_self());  // 分离线程，使他在终止时他的存储器能被收回
Free(vargp);  //释放主线程分配的存储器块
echo(connfd);
Close(connfd);
return NULL;
}

